package com.bestcem.xm.ticket.dao;

import com.bestcem.xm.ticket.entity.mysql.TicketWechatNotificationDO;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import java.util.List;

/**
 * ds_ticket_wechat_notification 相关DAO层方法
 *
 * @author XiaoYunSong <ys.xiao@idiaoyan.com>
 * @version 通知提醒新增微信公众号
 * @date 2022/4/1 16:19
 */
public interface TicketWechatNotificationDao {
    /**
     * 查询 通知提醒的订阅微信用户
     *
     * @param surveyId 问卷id
     * @param openId   微信用户openId
     * @return 对应的订阅关系
     * @author XiaoYunSong <ys.xiao@idiaoyan.com>
     * @date 2022/4/18 17:53
     */
    @Nullable
    TicketWechatNotificationDO findNotificationSubscriber(String surveyId, String openId);

    /**
     * 查询 通知提醒的订阅微信用户
     *
     * @param surveyId 问卷id
     * @return 订阅的微信用户openId列表
     * @author XiaoYunSong <ys.xiao@idiaoyan.com>
     * @date 2022/4/7 10:51
     */
    @Nonnull
    List<String> listNotificationSubscriberOpenIds(String surveyId);


    /**
     * 添加 微信用户订阅通知提醒 链接关系
     *
     * @param surveyId 问卷id
     * @param openId   微信openId
     * @return 添加成功与否
     * @author XiaoYunSong <ys.xiao@idiaoyan.com>
     * @date 2022/4/1 18:52
     */
    boolean saveNotificationSubscription(String surveyId, String openId);


    /**
     * 删除 微信用户订阅通知提醒 链接关系
     *
     * @param surveyId 问卷id
     * @param openIds  微信openId列表
     * @return 删除成功与否
     * @author XiaoYunSong <ys.xiao@idiaoyan.com>
     * @date 2022/4/1 18:52
     */
    @Nonnull
    Boolean removeNotificationSubscription(String surveyId, List<String> openIds);


    /**
     * 移除微信用户订阅的所有问卷
     *
     * @param openId 微信openId
     * @author XiaoYunSong <ys.xiao@idiaoyan.com>
     * @date 2022/4/11 14:51
     */
    @Nonnull
    Boolean removeWechatUserSubscription(String openId);
}
